import matplotlib.pyplot as plt  # 导入matplotlib.pyplot模块
# 设置字体和负号显示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False  # 解决负号乱码问题
# 准备天数信息
days = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15']
# 准备平均最高温度数据
max_temps = [29, 30, 31, 32, 33, 34, 31, 30, 29, 30, 32, 33, 31, 30, 29]
# 准备平均最低温度数据
min_temps = [22, 23, 24, 25, 24, 25, 24, 23, 22, 23, 24, 25, 24, 23, 22]
# 未来15天降水量
precipitation = [3.2, 5.1, 0.0, 0.5, 8.7, 15.4, 12.3, 2.1, 0.0, 1.2, 6.8, 20.1, 7.5, 3.6, 0.2]
# 创建图形并设置大小和分辨率
fig, ax1 = plt.subplots(figsize=(8, 6), dpi=150)
# 添加网格
ax1.grid(linestyle="--", alpha=0.5)
# 绘制平均最高温度折线图
line1, = ax1.plot(days, max_temps, color="r", label="平均最高温度", marker='o')
# 绘制平均最低温度折线图
line2, = ax1.plot(days, min_temps, color="b", label="平均最低温度", marker='o')
# 添加数据点标签
for i, txt in enumerate(max_temps):
    ax1.annotate(text=f'{txt}℃', xy=(days[i], max_temps[i]), textcoords="offset points", color="red", xytext=(0, -15), ha='center')
for i, txt in enumerate(min_temps):
    ax1.annotate(text=f'{txt}℃', xy=(days[i], min_temps[i]), textcoords="offset points", color="blue", xytext=(0, 15), ha='center')
# 创建第二个y轴
ax2 = ax1.twinx()
# 绘制降水量柱形图
bar = ax2.bar(days, precipitation, color='skyblue', label='降水量 (mm)', alpha=0.5)
# 添加坐标轴标签和标题
ax1.set_xlabel("天数")  # 添加x轴标签
ax1.set_ylabel("温度 (单位: ℃)")  # 添加y轴标签
ax2.set_ylabel("降水量 (单位: mm)")  # 添加第二个y轴标签
plt.title("清远市未来15天平均最高/最低温度及降水量")  # 添加图表标题
# 显示图例
ax1.legend(loc='upper left')  # 温度图例
ax2.legend(loc='upper right')  # 降水量图例
# 绘制2025年国内热门游戏排行饼状图
labels = ['王者荣耀', '原神', '和平精英', '金铲铲之战', '第五人格', '开心消消乐', '贪吃蛇大作战', '其他']
shares = [35, 20, 12, 10, 8, 6, 5, 4]
# 创建一个新的子图
ax3 = fig.add_subplot(2, 1, 2)  # 2行1列的第2个位置
# 绘制饼状图
ax3.pie(shares, labels=labels, autopct='%1.1f%%', startangle=140)
# 添加标题
ax3.set_title("2025年国内热门游戏排行")
# 显示图形
plt.tight_layout()  # 自动调整子图参数，使之填充整个图像区域
# 保存图形
# plt.savefig('temp.png')
# 显示图形
plt.show()